package com.yuhs.zixing.study.multithread.mashibing.t002lock.l001;

import lombok.extern.slf4j.Slf4j;

/**
 * Function: synchronized  可以看到 count 资源
 * 对某个对象加锁
 * synchronized 原子性 也保证了 可见性
 *
 * @Author yuhongsheng
 * @Date: 2023-12-23 18:53:26
 */
@Slf4j
public class Lock001Synchronized003 implements Runnable {

    private int count = 100;

    @Override
    public synchronized void run() {
        count--;
        log.atInfo().log("线程 {} count {}", Thread.currentThread().getName(), count);
    }


    /**
     * 多个线程 同时操作一个资源 count 资源 不是递减的  ；
     *
     * @param args
     */
    public static void main(String[] args) {
        Lock001Synchronized003 lock001Synchronized = new Lock001Synchronized003();
        for (int i = 0; i < 100; i++) {
            new Thread(lock001Synchronized, "线程" + i).start();
        }
    }
}
